package random

import C "gitee.com/ljfirst/algo-go-sdk/common/constant"

/**
 * @author ljfirst
 * @version V1.0
 * @date 2023/7/19 13:30
 * @author-Email ljfirst@mail.ustc.edu.cn
 * @blogURL https://blog.csdn.net/ljfirst
 * @description non_rand_01()函数以不同的概率生成0或1，请在此基础上写出
 * 等概率生成[0,n]随机数的函数代码
 * 因为即使non_rand_01()函数以不同的概率生成0或1，但是生成0-1和1-0的概率是相等的
 **/
type EqualProbability struct {
	NonEqualProbability
}

func (m *EqualProbability) EqualRandomMethod() int {
	for {
		a1 := m.NonEqualProbability.NonEqualRandomMethod(0.6)
		a2 := m.NonEqualProbability.NonEqualRandomMethod(0.6)
		if a1 == 0 && a2 == 1 {
			return 1
		}
		if a1 == 1 && a2 == 0 {
			return 0
		}
	}
}

func (m *EqualProbability) GetAttribute() *C.Attribute {
	return &C.Attribute{
		Tags: []string{},
		Desc: &C.Desc{
			Name:        "RandomByNonEqualProbability",
			NameCn:      "概率:不同的概率生成同概率",
			Description: "non_rand_01()函数以不同的概率生成0或1，请在此基础上写出等概率生成[0,n]随机数的函数代码",
			ParamsDesc: map[string]string{
			},
			Example: map[int]string{
			},
		},
	}
}
